/* queue.h -- 队列接口 */
#pragma c9x on  // 启用C99的特性
#ifndef _QUEUE_H    // 防止重复导入
#define _QUEUE_H
#include <stdbool.h>

// 插入 Item 定义
typedef int Item;   // 这里的Item表示一个整数值

#define MAXQUEUE 10  // 队列最大项目数

typedef struct node { // 节点 包含item，以及下一个节点的位置信息
    Item item;
    struct node * next;
} Node;

typedef struct queue { // 记录队列的头，尾，个数
    Node * front;   // 队首
    Node * rear;    // 队尾
    int items;
} Queue;

/* 初始化队列 */
void InitializeQueue(Queue * pq);

/* 判断队列是否已满 */
bool QueueIsFull(const Queue * pq);

/* 判断队列是否为空 */
bool QueueIsEmpty(const Queue * pq);

/* 返回项目个数 */
int QueueItemCount(const Queue * pq);

/* 队列添加项目 */
bool EnQueue(Item item, Queue * pq);

/* 队列删除项目 */
bool DeQueue(Item * pitem, Queue * pq);

/* 清空队列 */
void EmptyTheQueue(Queue * pq);

#endif
